﻿#include<iostream>
using namespace std;

template<typename type1>
type1 bigger(type1 a, type1 b) {//支持任何类型
	a = b;
	return a > b ? a : b;
}

template<typename type1>
type1 ave(type1 a, type1 b, type1 c) {//支持任何类型
	type1 x = a * b;
	type1 p[1999];
	return (a + b + c + x) / 2;
}
int main() {

	const int a{ 100 }, b{ 12310 };
	int c{ 100 };

	const int& la{ a };
	const int& lb{ b };
	c = bigger(la, lb);
	cout << la << endl;//100，bingger的a = b对于原函数的a不起作用


	int d{ 100 }, e{ 100 }, f{ 100 };
	//f = *ave(&d, &e, &f);//结果是错的，因为传入的是内存地址
	cout << ave(1.0f, 2.1f, 465.1f) << endl;
	cout << ave<int>(1.0f, 2.1f, 465.1f) << endl;//将参数全部转化为int
	cout << ave(12, 2, 3) << endl;
	cout << ave((char)11, (char)12, (char)13) << endl;//
}